// Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
//
// Licensed under the BSD 3-Clause License (the "License"); you may not use this
// file except in compliance with the License. You may obtain a copy of the
// License at
//
// https://opensource.org/licenses/BSD-3-Clause
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.

#ifndef FLARE_TESTING_ENDPOINT_H_
#define FLARE_TESTING_ENDPOINT_H_

#include "flare/base/net/endpoint.h"

namespace flare::testing {

// On Linux, binding on port zero automatically resolves to an ephemeral port.
// You might want to use this trick to chose your "available" port.

std::uint16_t PickAvailablePort(int type = SOCK_STREAM);

// Same as `PickAvailablePort`, using "127.0.0.1" as IP address.
Endpoint PickAvailableEndpoint(int type = SOCK_STREAM);

}  // namespace flare::testing

#endif  // FLARE_TESTING_ENDPOINT_H_
